Many serial data protocols and mass storage devices rely upon asynchronous data encoding using multiple relative pulsewidths. Data is represented by two or more pulsewidths in a stream, usually with known fixed relative ratios. The base clock used is inferred by the data itself, rather than being separately provided.
Typical decoding methods for such data streams typically regenerate a clock frequency from the data stream, and count that clock per data state or transition to demodulate the data. This requisite clock regeneration step, however, introduces complexity and cost into systems with existing asynchronous clocks.
A need exists for a method to use an asynchronous clock to reliably demodulate a pulsewidth-modulated data stream.